package com.vvv.designpattern.pay.strategy.context;

import com.alipay.api.AlipayApiException;
import com.vvv.designpattern.pay.strategy.PayStrategyInterface;
import com.vvv.designpattern.pojo.Order;

/**
 * @author vvv
 * @date 2023-11-22 15 07
 * discription策略模式：PayContext是上下文角色，用于暴露给客户端使用的，调用具体策略角色的方法
 * 工厂模式：PayContext是具体产品角色，也就是被创建的角色
 * PayContext是一个有状态的类，因为他有set具体策略的方法，所以我们应该根据策略来创建PayContext对象
 * 我们现在有两个策略一个是支付宝另一个是微信支付，所以我们要创建两个PayContext对象
 *
 * 门面模式：PayContext是子系统对象
 */
public class PayContext extends AbstractPayContext{

    private PayStrategyInterface payStrategy;

    public PayContext(PayStrategyInterface payStrategy) {
        this.payStrategy = payStrategy;
    }

    @Override
    public String execute(Order order) {
        return this.payStrategy.pay(order);
    }
}
